#include <my_header.h>

int main(int argc, char *argv[]){                                  
    // 打开管道1的写端口
    int write_fd = open("1.pipe", O_WRONLY);
    ERROR_CHECK(write_fd, -1, "open 1.pipe");
    // 打开管道2的读端口
    int read_fd = open("2.pipe", O_RDONLY);
    ERROR_CHECK(read_fd, -1, "open 2.pipe");

    // 设置消息缓冲区
    char mes[200] = {0};
    // 设置传输结束标志EOT
    const char eot = '\x04';  // EOT 字符

    // 通信进程
    while(1){
        int count=0;
        // usera连续发送消息
        while(1){
            printf("input a message: "); // 提示输入
            fflush(stdout); // 刷新输出流
            bzero(mes, 200); // 消息缓冲区清零
            count = read(STDIN_FILENO, mes, 200); // 从标准输入流读取
            if(count == 0){
                printf("发送消息结束，开始接受对方消息。\n");
                write(write_fd, &eot, 1);
                break;  
            }
            write(write_fd, mes, count); // 向管道1写数据
        }

        // 接收userb的消息
        bzero(mes, 200); // 消息缓冲区清零
        count = read(read_fd, mes, 200); // 从管道2中读数据
        if(count == 0){                                                                                  
            printf("对方已终止输入并退出程序。\n");
            break;
        }  

        printf("userb: %s\n", mes); // 向终端显示userb发送的消息
    }
    // 通信结束，关闭管道端口
    close(write_fd);
    close(read_fd);
    return 0;
}

